PHP 8.1 এ Enums এর Syntax
PHP 8.1 এ Enums (Enumerations) একটি গুরুত্বপূর্ণ ফিচার হিসেবে পরিচিত হয়েছে, যা একটি নির্দিষ্ট গ্রুপের মান সংজ্ঞায়িত করার জন্য ব্যবহৃত হয়। এই ফিচারটির মাধ্যমে, আপনি একাধিক মানের জন্য একটি টাইপ সেফ পদ্ধতিতে enum তৈরি করতে পারবেন, যা কোডের স্পষ্টতা, নিরাপত্তা এবং পড়া সহজ করে তোলে।
Enums কী?
Enum একটি ডেটা টাইপ যা পূর্বনির্ধারিত একাধিক স্থির মান ধারণ করে। এর মাধ্যমে, আপনি সেই মানগুলোর মধ্যে একটি নির্বাচন করতে পারবেন। উদাহরণস্বরূপ, আপনি যদি দিনগুলোকে একটি Enum হিসাবে সংজ্ঞায়িত করেন, তাহলে আপনি Monday, Tuesday, Wednesday ইত্যাদি মান ব্যবহার করতে পারবেন।
PHP 8.1 এ, Enums দুই ধরনের হতে পারে:
- Backed Enums: যেগুলোর সাথে নির্দিষ্ট মান থাকে (যেমন
intবাstring)। - Pure Enums: যেগুলোর কোন মান থাকে না, শুধুমাত্র Enum এর নাম থাকে।
1. Backed Enums (প্রকারভেদ সহ Enum)
Backed Enums-এ আপনি Enum এর প্রতিটি কেসের জন্য একটি নির্দিষ্ট মান (যেমন একটি int বা string) নির্ধারণ করতে পারেন। এটি value-based Enum।
Backed Enum এর Syntax:
enum Status: string {
case Pending = 'pending';
case Approved = 'approved';
case Rejected = 'rejected';
}এখানে, Status একটি string backed Enum, যেখানে প্রতিটি কেসের সাথে একটি স্ট্রিং মান নির্ধারণ করা হয়েছে ('pending', 'approved', 'rejected')।
ব্যবহার উদাহরণ:
function processStatus(Status $status): void {
echo "Processing status: " . $status->value; // Accessing the value of the enum
}
processStatus(Status::Approved); // Output: Processing status: approvedএখানে, আমরা Status::Approved ব্যবহার করছি, যা approved এর মান সহ একটি Enum কেস হবে। ->value দ্বারা Enum এর মান অ্যাক্সেস করা হয়েছে।
2. Pure Enums (Value-less Enum)
Pure Enums এ কোনো মান থাকে না, শুধুমাত্র Enum কেসের নাম থাকে। এই ধরনের Enums সাধারণত কেবল মাত্র কেসগুলির মধ্যে নির্বাচন করার জন্য ব্যবহৃত হয়।
Pure Enum এর Syntax:
enum Day {
case Monday;
case Tuesday;
case Wednesday;
}এখানে, Day একটি pure Enum, যার কোনো নির্দিষ্ট মান নেই।
ব্যবহার উদাহরণ:
function checkDay(Day $day): void {
switch ($day) {
case Day::Monday:
echo "Start of the week!";
break;
case Day::Tuesday:
echo "Second day!";
break;
case Day::Wednesday:
echo "Midweek!";
break;
}
}
checkDay(Day::Monday); // Output: Start of the week!এখানে, Day::Monday, Day::Tuesday, ইত্যাদি ব্যবহার করা হয়েছে, কিন্তু কোনো নির্দিষ্ট মান নেই, শুধুমাত্র Enum কেসের নাম।
3. Methods in Enums
PHP 8.1 এ Enums এ মেথড যুক্ত করা সম্ভব। আপনি Enum কেসের সাথে সম্পর্কিত অতিরিক্ত মেথড তৈরি করতে পারেন।
Methods in Enum:
enum Status: string {
case Pending = 'pending';
case Approved = 'approved';
case Rejected = 'rejected';
public function label(): string {
return match($this) {
self::Pending => 'Pending approval',
self::Approved => 'Approved',
self::Rejected => 'Rejected',
};
}
}এখানে, label() মেথড Status Enum এর প্রতিটি কেসের জন্য একটি লেবেল রিটার্ন করে। match এক্সপ্রেশন ব্যবহার করা হয়েছে, যা PHP 8.0 এর নতুন ফিচার।
ব্যবহার উদাহরণ:
$status = Status::Pending;
echo $status->label(); // Output: Pending approvalএখানে, label() মেথড দ্বারা Status::Pending এর জন্য লেবেল রিটার্ন করা হয়েছে।
4. Enum Methods and Properties
Enum ক্লাসে আপনার নিজস্ব প্রপার্টি এবং মেথড যুক্ত করা সম্ভব।
enum Status: int {
case Pending = 1;
case Approved = 2;
case Rejected = 3;
public function isApproved(): bool {
return $this === self::Approved;
}
}এখানে, isApproved() মেথড চেক করে যে Enum কেসটি Approved কিনা।
ব্যবহার উদাহরণ:
$status = Status::Approved;
if ($status->isApproved()) {
echo "The status is approved!";
} else {
echo "The status is not approved.";
}এখানে, isApproved() মেথড ব্যবহার করে আমরা চেক করেছি যে স্ট্যাটাস Approved কিনা।
5. Enum Switch Case Example
Enum এর সাথে switch স্টেটমেন্ট ব্যবহার করার উদাহরণ:
enum Status: string {
case Pending = 'pending';
case Approved = 'approved';
case Rejected = 'rejected';
}
function processStatus(Status $status): void {
switch ($status) {
case Status::Pending:
echo "The status is pending.";
break;
case Status::Approved:
echo "The status is approved.";
break;
case Status::Rejected:
echo "The status is rejected.";
break;
}
}
processStatus(Status::Approved); // Output: The status is approved.এখানে, switch স্টেটমেন্ট ব্যবহার করে Status Enum এর কেসগুলোর মধ্যে তুলনা করা হয়েছে।
6. Enum for Validating Values
Enums ব্যবহার করে আপনি কিছু ভ্যালিডেশন করতে পারেন। উদাহরণস্বরূপ, একটি Enum তৈরি করা যা কোনো মানের বৈধতা যাচাই করতে পারে।
enum Role: string {
case Admin = 'admin';
case User = 'user';
case Guest = 'guest';
public static function isValidRole(string $role): bool {
return in_array($role, array_column(self::cases(), 'value'));
}
}এখানে, isValidRole() মেথড ব্যবহার করে আপনি যাচাই করতে পারেন যে একটি নির্দিষ্ট মান একটি বৈধ Role কিনা।
ব্যবহার উদাহরণ:
if (Role::isValidRole('admin')) {
echo "Valid role!";
} else {
echo "Invalid role.";
}এখানে, isValidRole('admin') চেক করে যদি admin একটি বৈধ Role হয়।
Conclusion
PHP 8.1-এ Enums একটি শক্তিশালী নতুন ফিচার, যা কোডের স্পষ্টতা এবং টাইপ সেফটি বাড়ায়। আপনি Enums ব্যবহার করে কিছু পূর্বনির্ধারিত মান সংজ্ঞায়িত করতে পারেন এবং তাদের সাথে যুক্ত মেথড এবং প্রপার্টি ব্যবহার করতে পারেন। Backed Enums (যেগুলোর মান থাকে) এবং Pure Enums (যেগুলোর মান থাকে না) এর মাধ্যমে আপনি বিভিন্ন ধরনের প্রয়োজনীয়তা পূরণ করতে পারবেন। Enums PHP-তে কোডকে আরও পরিষ্কার, সঠিক এবং নিরাপদ করার জন্য একটি দুর্দান্ত উপায়।
Read more